// Copyright (c) 2000 Just Objects B.V. <just@justobjects.nl>
// Distributable under LGPL license. See terms of license at gnu.org.

package nl.justobjects.pushlet.servlet;

import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.Publisher;
import nl.justobjects.pushlet.core.Log;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

/**
 * Servlet to post an Event from a client to the Publisher.
 *
 * @version $Id: Postlet.java,v 1.2 2003/08/15 08:37:40 justb Exp $
 * @author Just van den Broecke - Just Objects &copy;
 */
public class Postlet extends HttpServlet {

	/** Servlet GET request: extracts event data and publishes to Publisher. */
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String subject = request.getParameter("subject");
		if (subject == null || subject.equals("")) {
			return;
		}

		// Create evcent and set attributes from parameters
		Event event = new Event(subject);
		for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
			String nextAttribute = (String) e.nextElement();
			event.setAttribute(nextAttribute, request.getParameter(nextAttribute));
		}

		// Let publisher dispatch event
		Publisher.getInstance().publish(event);

		response.setStatus(HttpServletResponse.SC_NO_CONTENT);
		Log.debug("published: " + event);
	}

	// TODO: Allow POSTing of Events as XML or Serialized Objects

}

/*
 * $Log: Postlet.java,v $
 * Revision 1.2  2003/08/15 08:37:40  justb
 * fix/add Copyright+LGPL file headers and footers
 *
 * Revision 1.1  2003/08/13 13:26:57  justb
 * moved all servlets to servlet package
 *
 * Revision 1.2  2003/05/18 16:15:08  justb
 * support for XML encoded Events
 *
 * Revision 1.1.1.1  2002/09/24 21:02:31  justb
 * import to sourceforge
 *
 * Revision 1.1.1.1  2002/09/20 22:48:18  justb
 * import to SF
 *
 * Revision 1.1.1.1  2002/09/20 14:19:03  justb
 * first import into SF
 *
 * Revision 1.3  2002/04/15 20:42:41  just
 * reformatting and renaming GuardedQueue to BlockingQueue
 *
 * Revision 1.2  2000/08/21 20:48:29  just
 * added CVS log and id tags plus copyrights
 *
 *
 */

